#include <iostream> 
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
/**********************************************相机参数设定，不同相机需要更改对应参数**********************/
// 内参
double fx = 945.9722731492461;
double fy = 943.0656300853134;
double cx = 615.148382932969;
double cy = 379.6503298091071;
// 畸变系数
double k1 = -0.3927721075949596;
double k2 = 0.102556671693031;
double p1 = -0.002152457227132993;
double p2 = 0.002561126600172608;
double k3 = 0.01290272237745279;



/*************************************************以下部分不需要修改***********************************/

/**
 *	@brief:	對輸入圖像做矯正去畸變，返回去畸变图像
 *	@param: inputImg     输入图像
 *			undistortImg 矫正后的图像
 *	@return 是否矫正成功
**/
bool imgUndistort(const cv::Mat &inputImg,
				  cv::Mat &undistortImg)
{	
	//相机内参矩阵K；
	cv::Mat K=(cv::Mat_<double>(3,3) << fx,   0,  cx, 
									 0,  fy,  cy,
									 0,   0,   1);

	//畸变系数：k1,k2,p1,p2,k3 
	cv::Mat distCoeffs=(cv::Mat_<double>(1,5) << k1,k2,p1,p2,k3);

	// 判断图像是否为空
	if(inputImg.empty())
		return false;

	// 去畸变 
	cv::undistort(inputImg,undistortImg,K,distCoeffs);
	
	return true;
}


